// console.log(11)
 
// let ddd:number=11 
 
// console.log(11)
// function color(value:string) {
//     console.log("value",value);
//     return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
//         console.log("target",target)
//         console.log("propertyKey",propertyKey)
//         console.log("descriptor",descriptor)

//     }
// }

// class utils{
//     @color("你好")
//     getNamea(){

//     }
// }


function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
    return class extends constructor {
        newProperty = "new property";
        hello = "override";
    }
}

@classDecorator
class Greeter {
    property = "property";
    hello: string;
    constructor(m: string) {
        this.hello = m;
    }
}
var dd=new Greeter("world")
console.log(dd.hello);